{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d5395a77-f720-4736-999c-cc32cf758077",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import datetime as dt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2f89f59b-cf76-4d18-9dd3-bf40153664e3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "63132a62-3087-4721-9cdc-958ff3eec95a",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('../datasets_raw/'  + 'ERCOT_DAM.csv')\n",
    "freq = \"H\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e20c23fa-c89f-440f-a6f3-973fd1b5ccff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ds</th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1/1/15 0:00</td>\n",
       "      <td>22.01</td>\n",
       "      <td>281.113500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1/1/15 10:00</td>\n",
       "      <td>28.33</td>\n",
       "      <td>278.697333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1/1/15 11:00</td>\n",
       "      <td>27.86</td>\n",
       "      <td>278.294667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1/1/15 12:00</td>\n",
       "      <td>25.79</td>\n",
       "      <td>278.352000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1/1/15 13:00</td>\n",
       "      <td>25.34</td>\n",
       "      <td>277.796000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25529</th>\n",
       "      <td>12/31/16 5:00</td>\n",
       "      <td>12.79</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25530</th>\n",
       "      <td>12/31/16 6:00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25531</th>\n",
       "      <td>12/31/16 7:00</td>\n",
       "      <td>24.09</td>\n",
       "      <td>284.960000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25532</th>\n",
       "      <td>12/31/16 8:00</td>\n",
       "      <td>23.69</td>\n",
       "      <td>285.140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25533</th>\n",
       "      <td>12/31/16 9:00</td>\n",
       "      <td>25.01</td>\n",
       "      <td>285.680000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25534 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  ds      y  temperature_Houston\n",
       "0        1/1/15 0:00  22.01           281.113500\n",
       "1       1/1/15 10:00  28.33           278.697333\n",
       "2       1/1/15 11:00  27.86           278.294667\n",
       "3       1/1/15 12:00  25.79           278.352000\n",
       "4       1/1/15 13:00  25.34           277.796000\n",
       "...              ...    ...                  ...\n",
       "25529  12/31/16 5:00  12.79           284.510000\n",
       "25530  12/31/16 6:00  20.00           284.510000\n",
       "25531  12/31/16 7:00  24.09           284.960000\n",
       "25532  12/31/16 8:00  23.69           285.140000\n",
       "25533  12/31/16 9:00  25.01           285.680000\n",
       "\n",
       "[25534 rows x 3 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b216dd90-37b0-43d0-b587-40fa56c0faa0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>25534.000000</td>\n",
       "      <td>25534.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>26.157666</td>\n",
       "      <td>294.950493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>26.807511</td>\n",
       "      <td>7.377139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.260000</td>\n",
       "      <td>267.570000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>18.172500</td>\n",
       "      <td>290.680000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>22.280000</td>\n",
       "      <td>296.287167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>28.510000</td>\n",
       "      <td>299.988750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2239.950000</td>\n",
       "      <td>312.640000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  y  temperature_Houston\n",
       "count  25534.000000         25534.000000\n",
       "mean      26.157666           294.950493\n",
       "std       26.807511             7.377139\n",
       "min        1.260000           267.570000\n",
       "25%       18.172500           290.680000\n",
       "50%       22.280000           296.287167\n",
       "75%       28.510000           299.988750\n",
       "max     2239.950000           312.640000"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "785306b3-ab2b-4931-af9c-3efc2240748f",
   "metadata": {},
   "outputs": [],
   "source": [
    "if df[\"ds\"].dtype == np.int64:\n",
    "        df.loc[:, \"ds\"] = df.loc[:, \"ds\"].astype(str)\n",
    "df.loc[:, \"ds\"] = pd.to_datetime(df.loc[:, \"ds\"])\n",
    "df = df.set_index(\"ds\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "da238580-de49-4bd3-9445-89a7bc0beeff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 00:00:00</th>\n",
       "      <td>22.01</td>\n",
       "      <td>281.113500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 10:00:00</th>\n",
       "      <td>28.33</td>\n",
       "      <td>278.697333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 11:00:00</th>\n",
       "      <td>27.86</td>\n",
       "      <td>278.294667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 12:00:00</th>\n",
       "      <td>25.79</td>\n",
       "      <td>278.352000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 13:00:00</th>\n",
       "      <td>25.34</td>\n",
       "      <td>277.796000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 05:00:00</th>\n",
       "      <td>12.79</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 06:00:00</th>\n",
       "      <td>20.00</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 07:00:00</th>\n",
       "      <td>24.09</td>\n",
       "      <td>284.960000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 08:00:00</th>\n",
       "      <td>23.69</td>\n",
       "      <td>285.140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 09:00:00</th>\n",
       "      <td>25.01</td>\n",
       "      <td>285.680000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25534 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         y  temperature_Houston\n",
       "ds                                             \n",
       "2015-01-01 00:00:00  22.01           281.113500\n",
       "2015-01-01 10:00:00  28.33           278.697333\n",
       "2015-01-01 11:00:00  27.86           278.294667\n",
       "2015-01-01 12:00:00  25.79           278.352000\n",
       "2015-01-01 13:00:00  25.34           277.796000\n",
       "...                    ...                  ...\n",
       "2016-12-31 05:00:00  12.79           284.510000\n",
       "2016-12-31 06:00:00  20.00           284.510000\n",
       "2016-12-31 07:00:00  24.09           284.960000\n",
       "2016-12-31 08:00:00  23.69           285.140000\n",
       "2016-12-31 09:00:00  25.01           285.680000\n",
       "\n",
       "[25534 rows x 2 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7c785f8b-b317-43f3-9ea7-7111a78ec88b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='ds'>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEECAYAAADEVORYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAu4UlEQVR4nO3deXQV9f3/8ec7YQk7CMiOQcUFBUEBF4pKUcEdrFp3cCnVYvlpay1+bRUXLFaLFmu1oLjUlbqBgAsqCIissgpiAgQIWwhbgJCQ5fP7YybhkoVsN7mXzOtxTk7u/czcua975857Zj4zd6455xARkWCIiXQAERGpOir6IiIBoqIvIhIgKvoiIgGioi8iEiA1Ih3gSJo1a+bi4+MjHUNE5KiyaNGiVOdc86KGRXXRj4+PZ+HChZGOISJyVDGz9cUNU/eOiEiAqOiLiASIir6ISIBEdZ++SHWXlZVFcnIyGRkZkY4iR6G4uDjatm1LzZo1S/0YFX2RCEpOTqZBgwbEx8djZpGOI0cR5xw7duwgOTmZDh06lPpx6t4RiaCMjAyaNm2qgi9lZmY0bdq0zHuJKvrVUEpaBkmp+yMdQ0pJBV/KqzyfHXXvVEM9n/oagKRRl0c4iYhEG23pi4gEiIq+iEiAqOiLBNwjjzzC888/n3//4Ycf5p///GfkAkmlUp++SJR47NMfWbk5LazT7NS6IY9eedoRx7njjju45ppruO+++8jNzeW9995j/vz5Yc0h0UNFXyTg4uPjadq0KYsXL2bbtm1069aNpk2bRjqWVBIVfZEoUdIWeWW66667eP3119m6dSt33HFHxHJI5VOfvogwcOBAPv/8cxYsWEC/fv0iHUcqkbb0RYRatWrRp08fGjduTGxsbKTjSCVS0RcRcnNzmTt3Lv/73/8iHUUqmbp3RAJu5cqVnHjiifTt25eOHTtGOo5UMm3piwRcp06dWLt2baRjSBXRlr6ISICo6IuIBIiKvohIgKjoi4gESIlF38zamdl0M1tpZj+a2f/z248xs2lmluD/b+K3m5mNMbNEM1tmZmeGTGuQP36CmQ2qvJclIiJFKc2WfjbwR+dcJ+AcYKiZdQKGA1875zoCX/v3AS4FOvp/Q4CXwFtJAI8CZwM9gUfzVhQiEjm7d+/m3//+d6RjlOj5558nPT29Up9jxIgRPPvss4e1xcfHk5qaGrbnmDFjBnPmzAnb9MqqxKLvnNvinPvBv70XWAW0Aa4G3vBHewMY4N++GnjTeeYCjc2sFdAPmOac2+mc2wVMA/qH88WISNlFS9F3zpGbm1vs8PIU/ezs7IrGCrtIF/0ynadvZvFAN2Ae0MI5t8UftBVo4d9uA2wMeViy31Zce8HnGIK3h0D79u3LEk/k6PbZcNi6PLzTbNkZLh11xFGGDx/OmjVr6Nq1KxdffDHHHnssEyZMIDMzk4EDB/LYY4+RlJRE//79Oeecc5gzZw49evTg9ttv59FHHyUlJYW3336bnj17MmLECNasWUNiYiKpqak8+OCD/OY3vwHgmWeeKXK6/fr14+yzz2bRokVMnTqVUaNGsWDBAg4cOMC1117LY489xpgxY9i8eTN9+vShWbNmTJ8+nfr167Nv3z4APvjgAyZPnszrr7/O4MGDiYuLY/HixfTq1YuhQ4cydOhQtm/fTt26dRk3bhynnHJKud7O0aNHM378eMC7SN19991HUlISV1xxBStWrADg2WefZd++fYwYMYIxY8bw8ssvU6NGDTp16sSoUaN4+eWXiY2N5a233uKFF16gXbt23HHHHaSmptK8eXNee+012rdvz+DBg2nYsCELFy5k69at/P3vf+faa68tV+5QpS76ZlYf+BC4zzmXFvqDvM45Z2auwmm8aY0FxgJ07949LNMUkeKNGjWKFStWsGTJEr788ks++OAD5s+fj3OOq666ipkzZ9K+fXsSExP53//+x/jx4+nRowfvvPMOs2fPZtKkSTz11FN88sknACxbtoy5c+eyf/9+unXrxuWXX86KFStISEgocroJCQm88cYbnHPOOQCMHDmSY445hpycHPr27cuyZcsYNmwYo0ePZvr06TRr1qzE15ScnMycOXOIjY2lb9++vPzyy3Ts2JF58+bxu9/9jm+++abYxz733HO89dZb+fc3b94MwKJFi3jttdeYN28ezjnOPvtsLrjgApo0Kb6XetSoUaxbt47atWuze/duGjduzN133039+vV54IEHALjyyisZNGgQgwYNYvz48QwbNiz/vdyyZQuzZ8/mp59+4qqrrqq6om9mNfEK/tvOuY/85m1m1so5t8Xvvknx2zcB7UIe3tZv2wRcWKB9Rvmji1QzJWyRV4Uvv/ySL7/8km7dugGwb98+EhISaN++PR06dKBz584A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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "92f0c3e4-a1a4-44cc-a11e-bdc81e511fa9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "is_na = sum(df['y'].isnull())\n",
    "print(is_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "656482ac-0ce4-41d1-806b-b18da30ff33f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "is_na = sum(df['temperature_Houston'].isnull())\n",
    "print(is_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2717fc64-e09b-4358-95d4-7532df6bc449",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 00:00:00</th>\n",
       "      <td>22.01</td>\n",
       "      <td>281.113500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 10:00:00</th>\n",
       "      <td>28.33</td>\n",
       "      <td>278.697333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 11:00:00</th>\n",
       "      <td>27.86</td>\n",
       "      <td>278.294667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 12:00:00</th>\n",
       "      <td>25.79</td>\n",
       "      <td>278.352000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 13:00:00</th>\n",
       "      <td>25.34</td>\n",
       "      <td>277.796000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 05:00:00</th>\n",
       "      <td>12.79</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 06:00:00</th>\n",
       "      <td>20.00</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 07:00:00</th>\n",
       "      <td>24.09</td>\n",
       "      <td>284.960000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 08:00:00</th>\n",
       "      <td>23.69</td>\n",
       "      <td>285.140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 09:00:00</th>\n",
       "      <td>25.01</td>\n",
       "      <td>285.680000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25534 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         y  temperature_Houston\n",
       "ds                                             \n",
       "2015-01-01 00:00:00  22.01           281.113500\n",
       "2015-01-01 10:00:00  28.33           278.697333\n",
       "2015-01-01 11:00:00  27.86           278.294667\n",
       "2015-01-01 12:00:00  25.79           278.352000\n",
       "2015-01-01 13:00:00  25.34           277.796000\n",
       "...                    ...                  ...\n",
       "2016-12-31 05:00:00  12.79           284.510000\n",
       "2016-12-31 06:00:00  20.00           284.510000\n",
       "2016-12-31 07:00:00  24.09           284.960000\n",
       "2016-12-31 08:00:00  23.69           285.140000\n",
       "2016-12-31 09:00:00  25.01           285.680000\n",
       "\n",
       "[25534 rows x 2 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## resample to potentially avoid missing values?\n",
    "df_re = df\n",
    "df_re.resample('H').mean()\n",
    "\n",
    "# df_re['ds'] = df_re.index.values\n",
    "df_re = df_re[['y', 'temperature_Houston']]\n",
    "df_re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a73f680d-bf61-4bc4-b262-f584caa9d905",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(abs(df['y'] - df_re['y']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5fe2c564-4a2b-4951-ab57-968089943f82",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(abs(df['temperature_Houston'] - df_re['temperature_Houston']))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f1cb6a83-a534-4823-9309-1c7ea3683acd",
   "metadata": {},
   "source": [
    "## Fill missing Dates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7ed16121-2a16-4d8b-acee-c686f64babcb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 00:00:00</th>\n",
       "      <td>22.01</td>\n",
       "      <td>281.113500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 10:00:00</th>\n",
       "      <td>28.33</td>\n",
       "      <td>278.697333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 11:00:00</th>\n",
       "      <td>27.86</td>\n",
       "      <td>278.294667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 12:00:00</th>\n",
       "      <td>25.79</td>\n",
       "      <td>278.352000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 13:00:00</th>\n",
       "      <td>25.34</td>\n",
       "      <td>277.796000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 05:00:00</th>\n",
       "      <td>12.79</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 06:00:00</th>\n",
       "      <td>20.00</td>\n",
       "      <td>284.510000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 07:00:00</th>\n",
       "      <td>24.09</td>\n",
       "      <td>284.960000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 08:00:00</th>\n",
       "      <td>23.69</td>\n",
       "      <td>285.140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-31 09:00:00</th>\n",
       "      <td>25.01</td>\n",
       "      <td>285.680000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25534 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         y  temperature_Houston\n",
       "ds                                             \n",
       "2015-01-01 00:00:00  22.01           281.113500\n",
       "2015-01-01 10:00:00  28.33           278.697333\n",
       "2015-01-01 11:00:00  27.86           278.294667\n",
       "2015-01-01 12:00:00  25.79           278.352000\n",
       "2015-01-01 13:00:00  25.34           277.796000\n",
       "...                    ...                  ...\n",
       "2016-12-31 05:00:00  12.79           284.510000\n",
       "2016-12-31 06:00:00  20.00           284.510000\n",
       "2016-12-31 07:00:00  24.09           284.960000\n",
       "2016-12-31 08:00:00  23.69           285.140000\n",
       "2016-12-31 09:00:00  25.01           285.680000\n",
       "\n",
       "[25534 rows x 2 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "bc4624e9-b2a9-4345-8588-73aaaf65fd94",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "data_len = len(df)\n",
    "df_copy = df.copy(deep=True)\n",
    "r = pd.date_range(start=df.index.min(), end=df.index.max(), freq=freq)\n",
    "df = df.reindex(r).rename_axis(\"ds\")\n",
    "num_added = len(df) - data_len\n",
    "print(num_added)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "657a6579-d9c1-472f-8e1b-2867779cb4f7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temperature_Houston</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 00:00:00</th>\n",
       "      <td>22.01</td>\n",
       "      <td>281.113500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 01:00:00</th>\n",
       "      <td>21.39</td>\n",
       "      <td>280.601667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 02:00:00</th>\n",
       "      <td>21.00</td>\n",
       "      <td>280.253333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 03:00:00</th>\n",
       "      <td>20.72</td>\n",
       "      <td>280.198000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 04:00:00</th>\n",
       "      <td>21.18</td>\n",
       "      <td>279.752000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 20:00:00</th>\n",
       "      <td>24.97</td>\n",
       "      <td>295.150000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 21:00:00</th>\n",
       "      <td>23.55</td>\n",
       "      <td>295.820000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 22:00:00</th>\n",
       "      <td>22.41</td>\n",
       "      <td>296.370000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 23:00:00</th>\n",
       "      <td>19.64</td>\n",
       "      <td>294.650000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-30 00:00:00</th>\n",
       "      <td>18.40</td>\n",
       "      <td>291.440000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25537 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         y  temperature_Houston\n",
       "ds                                             \n",
       "2015-01-01 00:00:00  22.01           281.113500\n",
       "2015-01-01 01:00:00  21.39           280.601667\n",
       "2015-01-01 02:00:00  21.00           280.253333\n",
       "2015-01-01 03:00:00  20.72           280.198000\n",
       "2015-01-01 04:00:00  21.18           279.752000\n",
       "...                    ...                  ...\n",
       "2017-11-29 20:00:00  24.97           295.150000\n",
       "2017-11-29 21:00:00  23.55           295.820000\n",
       "2017-11-29 22:00:00  22.41           296.370000\n",
       "2017-11-29 23:00:00  19.64           294.650000\n",
       "2017-11-30 00:00:00  18.40           291.440000\n",
       "\n",
       "[25537 rows x 2 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "968bb469-9a92-40a2-87b0-97b86b9b4d27",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "is_na = sum(df['y'].isnull())\n",
    "is_na"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "8783676b-2e17-494e-9bdd-663e03a44efb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "is_na = sum(df['temperature_Houston'].isnull())\n",
    "is_na"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7812bbd3-0231-4d8c-a038-e6fa769673bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[numpy.datetime64('2016-03-13T02:00:00.000000000'),\n",
       " numpy.datetime64('2015-03-08T02:00:00.000000000'),\n",
       " numpy.datetime64('2017-03-12T02:00:00.000000000')]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(set(df.index.values) - set(df_copy.index.values))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3606d5f2-ba79-4485-ad1a-136f5d0e6dc9",
   "metadata": {
    "tags": []
   },
   "source": [
    "## fill missing values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "08443ad2-159d-4643-99e0-40abb2ea0127",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fill_missing(df, col, limit_linear=20):\n",
    "    is_na = sum(df[col].isnull())\n",
    "    print(\"is na :\", is_na)\n",
    "    series = df[col]\n",
    "    series = series.interpolate(method=\"linear\", limit=limit_linear, limit_direction=\"both\")\n",
    "    df[col] = series\n",
    "    is_na = sum(df[col].isnull())\n",
    "    print(\"remaining na :\", is_na)\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1e5c215f-7dfd-41fb-bb57-cf0817e1d3ef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "is na : 3\n",
      "remaining na : 0\n"
     ]
    }
   ],
   "source": [
    "df = fill_missing(df, 'y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "a77b78bc-49b1-4cf2-8131-e4f128f9bebd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "is na : 3\n",
      "remaining na : 0\n"
     ]
    }
   ],
   "source": [
    "df = fill_missing(df, 'temperature_Houston')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e1327108-da39-4d08-ab85-9288c795f801",
   "metadata": {
    "tags": []
   },
   "source": [
    "## log price, temp in celsius"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "857374d5-b059-41b1-a1fa-8b8832d43bad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>temp_celsius_houston</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ds</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 00:00:00</th>\n",
       "      <td>22.01</td>\n",
       "      <td>7.963500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 01:00:00</th>\n",
       "      <td>21.39</td>\n",
       "      <td>7.451667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 02:00:00</th>\n",
       "      <td>21.00</td>\n",
       "      <td>7.103333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 03:00:00</th>\n",
       "      <td>20.72</td>\n",
       "      <td>7.048000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01 04:00:00</th>\n",
       "      <td>21.18</td>\n",
       "      <td>6.602000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 20:00:00</th>\n",
       "      <td>24.97</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 21:00:00</th>\n",
       "      <td>23.55</td>\n",
       "      <td>22.670000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 22:00:00</th>\n",
       "      <td>22.41</td>\n",
       "      <td>23.220000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-29 23:00:00</th>\n",
       "      <td>19.64</td>\n",
       "      <td>21.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-11-30 00:00:00</th>\n",
       "      <td>18.40</td>\n",
       "      <td>18.290000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25537 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         y  temp_celsius_houston\n",
       "ds                                              \n",
       "2015-01-01 00:00:00  22.01              7.963500\n",
       "2015-01-01 01:00:00  21.39              7.451667\n",
       "2015-01-01 02:00:00  21.00              7.103333\n",
       "2015-01-01 03:00:00  20.72              7.048000\n",
       "2015-01-01 04:00:00  21.18              6.602000\n",
       "...                    ...                   ...\n",
       "2017-11-29 20:00:00  24.97             22.000000\n",
       "2017-11-29 21:00:00  23.55             22.670000\n",
       "2017-11-29 22:00:00  22.41             23.220000\n",
       "2017-11-29 23:00:00  19.64             21.500000\n",
       "2017-11-30 00:00:00  18.40             18.290000\n",
       "\n",
       "[25537 rows x 2 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['temp_celsius_houston'] = df['temperature_Houston'].values -273.15\n",
    "df = df.drop(columns=['temperature_Houston'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "b0e64244-3c5b-4bdf-ae08-1e2186f4f053",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_log = df.copy(deep=True)\n",
    "df_log['y'] = np.log(df['y'].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "fe29fc77-95ec-44f0-8be8-ffc1bb8f563c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='ds'>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['y'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "b2b3cb08-c823-4dba-8dfd-90ba47ce3a76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='ds'>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_log['y'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "bbb8299e-84fe-46ac-a1c0-44b1f041a3e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='ds'>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['temp_celsius_houston'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0173d312-d927-4644-b666-259c4fdceb6e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4eff22b9-7346-40e2-8455-a3fdc42cdbac",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "583ad961-8be4-474e-acec-e0fee1cf5d07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ds</th>\n",
       "      <th>y</th>\n",
       "      <th>temp_celsius_houston</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2015-01-01 00:00:00</td>\n",
       "      <td>22.01</td>\n",
       "      <td>7.963500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2015-01-01 01:00:00</td>\n",
       "      <td>21.39</td>\n",
       "      <td>7.451667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2015-01-01 02:00:00</td>\n",
       "      <td>21.00</td>\n",
       "      <td>7.103333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2015-01-01 03:00:00</td>\n",
       "      <td>20.72</td>\n",
       "      <td>7.048000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2015-01-01 04:00:00</td>\n",
       "      <td>21.18</td>\n",
       "      <td>6.602000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25532</th>\n",
       "      <td>2017-11-29 20:00:00</td>\n",
       "      <td>24.97</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25533</th>\n",
       "      <td>2017-11-29 21:00:00</td>\n",
       "      <td>23.55</td>\n",
       "      <td>22.670000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25534</th>\n",
       "      <td>2017-11-29 22:00:00</td>\n",
       "      <td>22.41</td>\n",
       "      <td>23.220000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25535</th>\n",
       "      <td>2017-11-29 23:00:00</td>\n",
       "      <td>19.64</td>\n",
       "      <td>21.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25536</th>\n",
       "      <td>2017-11-30 00:00:00</td>\n",
       "      <td>18.40</td>\n",
       "      <td>18.290000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25537 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       ds      y  temp_celsius_houston\n",
       "0     2015-01-01 00:00:00  22.01              7.963500\n",
       "1     2015-01-01 01:00:00  21.39              7.451667\n",
       "2     2015-01-01 02:00:00  21.00              7.103333\n",
       "3     2015-01-01 03:00:00  20.72              7.048000\n",
       "4     2015-01-01 04:00:00  21.18              6.602000\n",
       "...                   ...    ...                   ...\n",
       "25532 2017-11-29 20:00:00  24.97             22.000000\n",
       "25533 2017-11-29 21:00:00  23.55             22.670000\n",
       "25534 2017-11-29 22:00:00  22.41             23.220000\n",
       "25535 2017-11-29 23:00:00  19.64             21.500000\n",
       "25536 2017-11-30 00:00:00  18.40             18.290000\n",
       "\n",
       "[25537 rows x 3 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['ds'] = df.index.values\n",
    "df = df.reset_index(drop=True)\n",
    "df = df[['ds', 'y', 'temp_celsius_houston']]\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "9d50a6dc-fd48-46ff-9597-fced031698ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ds</th>\n",
       "      <th>y</th>\n",
       "      <th>temp_celsius_houston</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2015-01-01 00:00:00</td>\n",
       "      <td>3.091497</td>\n",
       "      <td>7.963500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2015-01-01 01:00:00</td>\n",
       "      <td>3.062924</td>\n",
       "      <td>7.451667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2015-01-01 02:00:00</td>\n",
       "      <td>3.044522</td>\n",
       "      <td>7.103333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2015-01-01 03:00:00</td>\n",
       "      <td>3.031099</td>\n",
       "      <td>7.048000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2015-01-01 04:00:00</td>\n",
       "      <td>3.053057</td>\n",
       "      <td>6.602000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25532</th>\n",
       "      <td>2017-11-29 20:00:00</td>\n",
       "      <td>3.217675</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25533</th>\n",
       "      <td>2017-11-29 21:00:00</td>\n",
       "      <td>3.159126</td>\n",
       "      <td>22.670000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25534</th>\n",
       "      <td>2017-11-29 22:00:00</td>\n",
       "      <td>3.109507</td>\n",
       "      <td>23.220000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25535</th>\n",
       "      <td>2017-11-29 23:00:00</td>\n",
       "      <td>2.977568</td>\n",
       "      <td>21.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25536</th>\n",
       "      <td>2017-11-30 00:00:00</td>\n",
       "      <td>2.912351</td>\n",
       "      <td>18.290000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25537 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       ds         y  temp_celsius_houston\n",
       "0     2015-01-01 00:00:00  3.091497              7.963500\n",
       "1     2015-01-01 01:00:00  3.062924              7.451667\n",
       "2     2015-01-01 02:00:00  3.044522              7.103333\n",
       "3     2015-01-01 03:00:00  3.031099              7.048000\n",
       "4     2015-01-01 04:00:00  3.053057              6.602000\n",
       "...                   ...       ...                   ...\n",
       "25532 2017-11-29 20:00:00  3.217675             22.000000\n",
       "25533 2017-11-29 21:00:00  3.159126             22.670000\n",
       "25534 2017-11-29 22:00:00  3.109507             23.220000\n",
       "25535 2017-11-29 23:00:00  2.977568             21.500000\n",
       "25536 2017-11-30 00:00:00  2.912351             18.290000\n",
       "\n",
       "[25537 rows x 3 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_log['ds'] = df_log.index.values\n",
    "df_log = df_log.reset_index(drop=True)\n",
    "df_log = df_log[['ds', 'y', 'temp_celsius_houston']]\n",
    "df_log"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bc075af-3d58-4e72-b3bc-7c4ec4cd9219",
   "metadata": {},
   "source": [
    "## Save"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fce486f3-30f0-4caa-b01b-c377c0950acc",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('../datasets/energy/'  + 'price_ercot_dam.csv', index=False, float_format=\"%.2f\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c87516a4-433a-462d-995e-737c3c823e39",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_log.to_csv('../datasets/energy/'  + 'price_log_ercot_dam.csv', index=False, float_format=\"%.2f\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "np-dev",
   "language": "python",
   "name": "np-dev"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
